 

var api = require('../../../utils/api.js');
var $ = require('../../../utils/util.js'); 
var regeneratorRuntime = require('../../../utils/runtime.js') 
var app = getApp();
var Store = app.Store
  
Page({
  data: { 
    ycdm: '', // 默认数据(相电流、线电压........)
    station: 0, // 站房
    ycxlm: '', // 设备
    isShowC: true, // 是否显示
    isShowKong: false, // 是否是空
    eqlist: [ // 设备列表
    ],
    eqIndex: 1, // 头部弹框的选择（第二层设备） --- 第一个是站房
    isShowPop: false, // 是否显示弹框 
    isShowTime: false, // 是否显示时间弹框
    statusBarHeight:0, // 状态栏高度

    isConfirm1:false,//遥控人员认证窗口
    isConfirm2:false,//监控人员认证窗口
    isPass1:false,//遥控人员认证是否通过
    isPass2:false,//监控人员是否通过
    YkUsers:[],


  },
  async onLoad(options) {  
    let { statusBarHeight } = app.data; // 手机状态栏高度 
    this.setData({
      statusBarHeight, 
    })  
    Store.dispatch({
      type: 'SET_FROM',
      form: {

      },
    })
    if ('station' in options){ 
      var zf_list = await app._selected() // 获取站房
      var sb_list = await app._selectYcxlm({ station: options.station }) // 参数传的是站房id
      this.setData({ 
        station: options.station, // 站房id
        eqlist:[
          { YCXLM: zf_list.data[0].list[0].dept_name, dept_id: zf_list.data[0].list[0].station }, //【这点需要验证是不是传的站房id 还是企业id】
          ...sb_list.data
        ]
      }) 
      this.setData({
        station:options.station,
        ycxlm:options.ycxlm,
        title:options.ycxlm,
      })
    }else{
      var zf_list = await app._selected() // 获取站房
      var sb_list = await app._selectYcxlm({ station: zf_list.data[0].list[0].station }) // 参数传的是站房id
      this.setData({ 
        station: zf_list.data[0].list[0].station, // 站房id
        eqlist:[
          { YCXLM: zf_list.data[0].list[0].dept_name, dept_id: zf_list.data[0].list[0].station }, //【这点需要验证是不是传的站房id 还是企业id】
          ...sb_list.data
        ]
      }) 
      console.log(this.data.eqlist[1].YCXLM);
      this.setData({
        title: this.data.eqlist.length > 0 ? this.data.eqlist[1].YCXLM : '',
        ycxlm: this.data.eqlist.length > 0 ? this.data.eqlist[1].YCXLM : '',
      })
    }
    this.getYxList();//获取遥信列表
    this.getYkUsers();//获取遥控人员列表 


  },

  async onShow() { 
    var form = Store.getState().formInfor.form
    if (!form.selected) return
    var key = form.key
    switch (key) { 
      case 'selected': // 企业和站房列表接口 
        var sb_list = await app._selectYcxlm({ station: form.selected.station })// 获取设备列表  
        this.setData({
          title: sb_list.data[0].YCXLM,
          station: form.selected.station, // 站房id
           eqlist: [
             { YCXLM: form.selected.dept_name, dept_id: form.selected.station },//【这点需要验证是不是传的站房id 还是企业id】
            ...sb_list.data
          ]
        })
        this.getYxList();//获取遥信列表
        break
    }
    app._clearFromCache();
  },
    onPullDownRefresh: function () { // 下拉刷新
      this.getYxList();//获取遥信列表
      wx.stopPullDownRefresh();
  },
    input_handle(e) { //##input 输入##
      this.setData({
        [e.currentTarget.dataset.key]: e.detail.value
      })
    },
  onClosePop(){ // 关闭弹框
    this.setData({
      isShowPop: false
    }, () => {
      setTimeout(() => {
        this.setData({
          isShowC: true
        })
      }, 160)
    })
  },
  popTabHandle(e){ // 设备
    var {index} = $.detail(e)
    this.setData({
      eqIndex: index,
      title: this.data.eqlist[index].YCXLM
    }) 
    this.onClosePop()
    this.getYxList();//获取遥信列表
  },
  toAllHandle(e){ 
    var { key } = e.detail 
    switch (key*1){
      case 1: // 选择站房
        this.setData({
          eqIndex: 1, // ---该需求了---
          isShowPop: false
        })
        var { type } = $.detail(e)
        Store.dispatch({
          type: 'SET_FROM',
          form: {
            key: 'selected', // 后台要的更改字段 
            type: 3, // 表单类型 1： radio  2：select 3:特殊的radio
            config: {

            },
          },
        })
        $.linkurl(`/pages/main/chooseForm/chooseForm`)
        break;
      case 2: // 设备
        if (this.data.isShowPop){
          this.onClosePop() // 关闭
        } else {
          this.setData({
            isShowPop: true,
            isShowC: false
          })
        }
        break; 
    } 
  },
  getYxList(){//遥控列表获取
    var params={
      ycxlm: this.data.eqlist.length > 1 ? this.data.eqlist[this.data.eqIndex].YCXLM : '', // 设备
      station:this.data.station,
      keyword:this.data.keyword || ''
    }
    api.$post(api.yk.Yklist, params).then((res) => {
      if(res.data>=0){
        this.setData({
          isShowKong:true
        })
      }else{
        this.setData({
          isShowKong:false
        })
      }
        this.setData({
          pageList:res.data
        })
    })
  },
  getYkUsers(){//遥控人员列表获取
      var params={};
      api.$post(api.yk.YkUsers,params).then((res)=>{
        this.setData({
          YkUsers:res.data
        });
      });
  },
  opendeal(e){//分闸操作
    var item=$.detail(e);
    var YKNO=item.item.YKNO;
    if(YKNO==0 || YKNO==null || YKNO==''){
      $.toast('未配置遥控号,暂不支持遥控功能');
      return;
    }

    //测试是否可以进行相关操作
    var params1={
      redis_key:item.item.CODE,//redis 主键
    }
    api.$post(api.yk.getYKStatus,params1).then((res)=>{
      if(res.data){
        if(res.data.VALUE==0){
          $.toast('无法进行分闸操作,当前遥控点状态: 分 ,更新时间'+res.data.TIME)
          return
        }else{

          if(!this.data.isPass1){
            this.setData({
              isConfirm1:true
           })
           return
          }else if(!this.data.isPass2){
            this.setData({
              isConfirm2:true
           })
           return
          }

              //遥控
                var params={
                  YKNO:YKNO,//遥控号
                  YXCH:item.item.YXCH,//遥信厂号
                  v1:false,//分闸
                  company:item.item.company,// 企业名称
                  factory:item.item.YXCM, //厂站名称
                  line_name :item.item.YXXLM,//线路名称
                  point :item.item.YXDM,//测点名称
                  opera :this.data.opera_name,//操作人
                  monitor :this.data.monitor_name,//监控人
                  redis_key:item.item.CODE,//redis 主键
                };
                api.$post(api.yk.YKOperation,params).then((res)=>{
                      if(res.code==0){
                        $.toast('分闸命令已发送,正在查询操作结果');
                        var count=0;
                        var i=setInterval(()=>{
                          count++;
                          api.$post(api.yk.getYKStatus,params1).then((res)=>{
                            if(res.data.VALUE==0){
                              $.toast('分闸成功,正在为你刷新列表');
                              this.getYxList();//获取遥信列表
                              console.log('update')
                              clearInterval(i)
                            }
                            if(count>10){
                              $.toast('分闸失败,请查看设备是否在线');
                              clearInterval(i)
                            }
                          })
                        },2000)

                      }else{
                        // $.toast('未知错误');
                      }
                })
        }
      }
    })
  

  },
  closedeal(e){//合闸操作
    var item=$.detail(e);
    var YKNO=item.item.YKNO;
    if(YKNO==0 || YKNO==null || YKNO==''){
      $.toast('未配置遥控号,暂不支持遥控功能');
      return;
    }

    //测试是否可以进行相关操作
    var params1={
      redis_key:item.item.CODE,//redis 主键
    }
    api.$post(api.yk.getYKStatus,params1).then((res)=>{
      if(res.data){
        if(res.data.VALUE==1){
          $.toast('无法进行合闸操作,当前遥控点状态: 合 ,更新时间'+res.data.TIME)
          return
        }else{
          if(!this.data.isPass1){
            this.setData({
              isConfirm1:true
           })
           return
          }else if(!this.data.isPass2){
            this.setData({
              isConfirm2:true
           })
           return
          }

                //遥控
                var params={
                  YKNO:YKNO,//遥控号
                  YXCH:item.item.YXCH,//遥信厂号
                  v1:true,//合闸
                  company:item.item.company,// 企业名称
                  factory:item.item.YXCM, //厂站名称
                  line_name :item.item.YXXLM,//线路名称
                  point :item.item.YXDM,//测点名称
                  opera :this.data.opera_name,//操作人
                  monitor :this.data.monitor_name,//监控人
                  redis_key:item.item.CODE,//redis 主键
                };
                api.$post(api.yk.YKOperation,params).then((res)=>{
                  if(res.code==0){
                    $.toast('合闸命令已发送,正在查询操作结果');
                    var count=0;
                    var i=setInterval(()=>{
                      count++;
                      api.$post(api.yk.getYKStatus,params1).then((res)=>{
                        if(res.data.VALUE==1){
                          $.toast('合闸成功,正在为你刷新列表');
                          this.getYxList();//获取遥信列表
                          console.log('update')
                          clearInterval(i)
                        }
                        if(count>10){
                          $.toast('合闸失败,请查看设备是否在线');
                          clearInterval(i)
                        }
                      })
                    },2000)
                  }else{
                    // $.toast('未知错误');
                  }
                })
        }
      }
    })
    
  },
  change1(e){//遥控人员下拉列表 change
    var item=e.detail;
    this.setData({
      opera_id:item.id,
      opera_name:item.name 
    })
  },
  change2(e){//监控人员下拉列表 change
    var item=e.detail;
    this.setData({
      monitor_id:item.id,
      monitor_name:item.name
    })
  },
  confirmHandle(){//遥控人员认证
      if($.isNull(this.data.opera_id)){
        $.toast('请选择遥控人员');
      }else if($.isNull(this.data.opera_password)){
        $.toast('请先输入密码');
      }else{
        var params={
          id:this.data.isPass1?this.data.monitor_id:this.data.opera_id,
          password:this.data.isPass1?this.data.monitor_password:this.data.opera_password,
          user_name:this.data.isPass1?this.data.monitor_name:this.data.opera_name,
        }
        console.log('params',params);
        var that=this;
        api.$post(api.yk.checkUser,params).then((res)=>{
          if(res.code==0){
            if(this.data.isPass1){
              if(that.data.opera_id==that.data.monitor_id){
                $.toast('遥控人员和监控人员不能相同')
                return
              }
              $.toast('认证已完成,可以开始进行分合闸动作')
              this.setData({
                isPass2:true,
              })
            }else{
              $.toast('正在开启监控人员认证')
              setTimeout(() => {
                that.setData({
                  isPass1:true,
                  isConfirm2:true
                })
              }, 1300);
            }
          }
        })
      }
  },
  getYKStatus(code){//获取遥控状态
    return new Promise((resolve) => {
        var params={
            redis_key:code
        }
        var that=this;
        api.$post(api.yk.getYKStatus,params).then((res)=>{
          resolve(res)
        })
    })
      
  }


 
});
